Reflection in the sides of a Quadrilateral

Reflect a point P successively on the sides 
a, b, c, d of a rectangle to get the point P_{dcba}. Prove 
that PP_{dcba} is twice the diagonal of the rectangle 
and parallel to one of them. Is this true for a parallelogram?

Move

A = (4.994051431112013, -1.2934776051281445)
B = (5.737009820674065, 2.684944738978334)
P = (7.222926599798173, 3.883264722142935)
e = Line(A, B)
P_a = Mirror(P, e)
a_2 = OrthogonalLine(B, e)
b_2 = OrthogonalLine(A, e)
C = Point(a_2)
c_2 = OrthogonalLine(C, a_2)
D = Intersect(b_2, c_2)
poly1, d, a, b, c = Polygon(D, A, B, C)
P_{ba} = Mirror(P_a, a_2)
P_{cba} = Mirror(P_{ba}, c_2)
P_{dcba} = Mirror(P_{cba}, b_2)
f = Segment(B, D)
u = Vector(P, P_{dcba})
n = 1 (slider from 1 to 6, step 1)

Tool: Complex Multiplication (command ComplexMultiplication)
Select Points at O(0, 0), P(0, -1), A and B for A*B
Input: O, P, A, B
Output: j, AB

c = Circle(O, A)
d = Circle(O, B)
D = Intersect(c, xAxis, 2)
b = Segment(O, A)
f = Segment(O, B)
G = Intersect(d, xAxis, 1)
g = Circle(D, P, G)
E = Intersect(g, yAxis, 2)
e = Circle(O, E)
a, h = AngularBisector(f, b)
D' = Mirror(D, a)
i = Ray(O, D')
AB = Intersect(e, i, 1)
j = Segment(O, AB)

Tool: Complex Division (command ComplexDivision)
Select Points O(0, 0), P(0, -1), A and B for A/B
Input: O, P, A, B
Output: l, C

A/B

c = Circle(O, A)
d = Circle(O, B)
D = Intersect(c, xAxis, 2)
e = AngularBisector(A, O, D)
B' = Mirror(B, e)
f = Ray(O, B')
E = Intersect(c, yAxis, 1)
F = Intersect(d, xAxis, 1)
g = Segment(F, E)
G = Midpoint(g)
h = OrthogonalLine(G, g)
i = Segment(P, F)
H = Midpoint(i)
j = OrthogonalLine(H, i)
I = Intersect(h, j)
k = Circle(I, F)
J = Intersect(k, xAxis, 2)
p = Circle(O, J)
C = Intersect(p, f)
l = Segment(O, C)

Tool: Complex Addition (command ComplexAddition)
Select Points O(0, 0), A and B for A + B
Input: O, A, B
Output: C', c

A + B

u = Vector(O, B)
C' = Translate(A, u)
c = Segment(O, C')

Tool: Complex Subtraction (command ComplexSubtraction)
Select Points O(0, 0), A and B for A - B
Input: O, A, B
Output: c, A'

A - B

u = Vector(B, O)
A'_1 = Translate(A, u)
A' = Translate(A, u)
c = Segment(O, A')